Skip to content

feat(scheduler): enforce fractional GPU compute modes - #2046

Draft
davidLif wants to merge 1 commit into
codex/fractional-gpu-group-apifrom
codex/fractional-gpu-mode-scheduler
Draft

feat(scheduler): enforce fractional GPU compute modes#2046
davidLif wants to merge 1 commit into
codex/fractional-gpu-group-apifrom
codex/fractional-gpu-mode-scheduler

Conversation

@davidLif

Copy link
Copy Markdown
Collaborator

Description

Stack PR 7/9 for GPU sharing migration.

Base: codex/fractional-gpu-group-api
Head: codex/fractional-gpu-mode-scheduler

This updates scheduler placement/accounting to use typed fractional GPU groups, including compute mode data, through node info, pod info, cache, statement rollback, predicates, allocation tests, and reclaim integration tests. It preserves the existing statement rollback ordering so NUMA discard/deallocate bookkeeping stays symmetric.

Related Issues

N/A

Checklist

Note: Ensure your PR title follows the Conventional Commits format (e.g., feat(scheduler): add new feature)

  • Self-reviewed
  • Added/updated tests (if needed)
  • Updated documentation (if needed)
  • Added a changelog fragment via make changelog (or applied the skip-changelog label). Do not edit CHANGELOG.md directly — pending fragments are folded into it at release time.

Breaking Changes

None.

Additional Notes

Validation run:

go test ./pkg/scheduler/api/node_info ./pkg/scheduler/api/pod_info ./pkg/scheduler/gpu_sharing ./pkg/scheduler/framework ./pkg/scheduler/plugins/predicates ./pkg/scheduler/actions/allocate ./pkg/scheduler/actions/integration_tests/reclaim
go test ./pkg/scheduler/plugins/numa ./pkg/scheduler/framework ./pkg/scheduler/actions/allocate -count=1

@davidLif
davidLif force-pushed the codex/fractional-gpu-mode-scheduler branch from 4478f8a to 0622ae7 Compare August 10, 2026 10:02
@davidLif
davidLif force-pushed the codex/fractional-gpu-mode-scheduler branch from 0622ae7 to 4831cca Compare August 11, 2026 14:03
@github-actions

github-actions Bot commented Aug 11, 2026

Copy link
Copy Markdown

📊 Performance Benchmark Results

Comparing PR (codex/fractional-gpu-mode-scheduler) vs main branch — click to expand
goos: linux
goarch: amd64
pkg: github.com/kai-scheduler/KAI-scheduler/pkg/scheduler/actions
cpu: AMD EPYC 9V74 80-Core Processor                
                                    │ main-bench.txt │           pr-bench.txt            │
                                    │     sec/op     │   sec/op     vs base              │
AllocateAction_SmallCluster-4            107.4m ± 0%   107.7m ± 5%       ~ (p=0.180 n=6)
AllocateAction_MediumCluster-4           128.1m ± 1%   128.8m ± 1%       ~ (p=0.180 n=6)
AllocateAction_LargeCluster-4            193.4m ± 1%   193.0m ± 1%       ~ (p=0.589 n=6)
ReclaimAction_SmallCluster-4             103.6m ± 0%   103.6m ± 0%       ~ (p=0.699 n=6)
ReclaimAction_MediumCluster-4            107.3m ± 1%   107.3m ± 0%       ~ (p=0.937 n=6)
PreemptAction_SmallCluster-4             104.7m ± 0%   104.6m ± 0%       ~ (p=0.394 n=6)
PreemptAction_MediumCluster-4            116.3m ± 1%   115.0m ± 1%  -1.10% (p=0.015 n=6)
ConsolidationAction_SmallCluster-4       121.2m ± 1%   121.1m ± 0%       ~ (p=0.699 n=6)
ConsolidationAction_MediumCluster-4      256.4m ± 1%   254.5m ± 4%       ~ (p=0.699 n=6)
FullSchedulingCycle_SmallCluster-4       105.8m ± 0%   105.6m ± 1%       ~ (p=0.093 n=6)
FullSchedulingCycle_MediumCluster-4      117.9m ± 3%   117.7m ± 2%       ~ (p=0.394 n=6)
FullSchedulingCycle_LargeCluster-4       153.1m ± 1%   153.7m ± 2%       ~ (p=0.818 n=6)
ManyQueues_MediumCluster-4               133.1m ± 2%   132.3m ± 1%       ~ (p=0.310 n=6)
GangScheduling_MediumCluster-4           147.3m ± 2%   147.0m ± 1%       ~ (p=0.485 n=6)
geomean                                  130.6m        130.4m       -0.15%

                                    │ main-bench.txt │            pr-bench.txt            │
                                    │      B/op      │     B/op      vs base              │
AllocateAction_SmallCluster-4           2.080Mi ± 1%   2.080Mi ± 0%       ~ (p=0.699 n=6)
AllocateAction_MediumCluster-4          9.903Mi ± 0%   9.915Mi ± 0%  +0.12% (p=0.002 n=6)
AllocateAction_LargeCluster-4           31.27Mi ± 0%   31.28Mi ± 0%  +0.05% (p=0.009 n=6)
ReclaimAction_SmallCluster-4            955.0Ki ± 0%   957.6Ki ± 0%  +0.27% (p=0.041 n=6)
ReclaimAction_MediumCluster-4           3.103Mi ± 0%   3.112Mi ± 0%  +0.28% (p=0.002 n=6)
PreemptAction_SmallCluster-4            1.343Mi ± 0%   1.345Mi ± 0%       ~ (p=0.589 n=6)
PreemptAction_MediumCluster-4           5.936Mi ± 0%   5.946Mi ± 0%  +0.16% (p=0.002 n=6)
ConsolidationAction_SmallCluster-4      8.207Mi ± 0%   8.205Mi ± 0%       ~ (p=0.937 n=6)
ConsolidationAction_MediumCluster-4     67.76Mi ± 0%   67.77Mi ± 0%       ~ (p=0.394 n=6)
FullSchedulingCycle_SmallCluster-4      1.407Mi ± 1%   1.415Mi ± 1%       ~ (p=0.180 n=6)
FullSchedulingCycle_MediumCluster-4     6.140Mi ± 0%   6.150Mi ± 0%  +0.17% (p=0.002 n=6)
FullSchedulingCycle_LargeCluster-4      18.35Mi ± 0%   18.38Mi ± 0%  +0.14% (p=0.002 n=6)
ManyQueues_MediumCluster-4              13.13Mi ± 0%   13.14Mi ± 0%  +0.08% (p=0.002 n=6)
GangScheduling_MediumCluster-4          15.33Mi ± 0%   15.35Mi ± 0%  +0.12% (p=0.002 n=6)
geomean                                 6.543Mi        6.553Mi       +0.15%

                                    │ main-bench.txt │           pr-bench.txt            │
                                    │   allocs/op    │  allocs/op   vs base              │
AllocateAction_SmallCluster-4            31.49k ± 0%   31.60k ± 0%  +0.35% (p=0.002 n=6)
AllocateAction_MediumCluster-4           245.8k ± 0%   246.2k ± 0%  +0.19% (p=0.002 n=6)
AllocateAction_LargeCluster-4            1.007M ± 0%   1.008M ± 0%  +0.11% (p=0.002 n=6)
ReclaimAction_SmallCluster-4             8.937k ± 0%   8.998k ± 0%  +0.69% (p=0.002 n=6)
ReclaimAction_MediumCluster-4            28.12k ± 0%   28.37k ± 0%  +0.89% (p=0.002 n=6)
PreemptAction_SmallCluster-4             15.27k ± 0%   15.35k ± 0%  +0.56% (p=0.002 n=6)
PreemptAction_MediumCluster-4            55.29k ± 0%   55.64k ± 0%  +0.63% (p=0.002 n=6)
ConsolidationAction_SmallCluster-4       109.7k ± 0%   109.7k ± 0%  +0.06% (p=0.002 n=6)
ConsolidationAction_MediumCluster-4      1.020M ± 0%   1.021M ± 0%  +0.03% (p=0.002 n=6)
FullSchedulingCycle_SmallCluster-4       19.63k ± 0%   19.72k ± 0%  +0.45% (p=0.002 n=6)
FullSchedulingCycle_MediumCluster-4      136.3k ± 0%   136.6k ± 0%  +0.25% (p=0.002 n=6)
FullSchedulingCycle_LargeCluster-4       537.7k ± 0%   538.5k ± 0%  +0.16% (p=0.002 n=6)
ManyQueues_MediumCluster-4               274.0k ± 0%   274.5k ± 0%  +0.16% (p=0.002 n=6)
GangScheduling_MediumCluster-4           455.3k ± 0%   456.2k ± 0%  +0.19% (p=0.002 n=6)
geomean                                  109.0k        109.3k       +0.34%

pkg: github.com/kai-scheduler/KAI-scheduler/pkg/scheduler/actions/integration_tests/reclaim
                                                          │ main-bench.txt │            pr-bench.txt            │
                                                          │     sec/op     │    sec/op     vs base              │
ReclaimLargeJobs_10Node-4                                      135.6m ± 1%   136.1m ±  1%       ~ (p=0.589 n=6)
ReclaimLargeJobs_50Node-4                                      323.0m ± 5%   321.3m ±  3%       ~ (p=0.937 n=6)
ReclaimLargeJobs_100Node-4                                     635.3m ± 3%   632.8m ±  4%       ~ (p=0.818 n=6)
ReclaimLargeJobs_200Node-4                                      1.598 ± 2%    1.580 ±  3%       ~ (p=0.240 n=6)
ReclaimLargeJobs_500Node-4                                      7.255 ± 2%    7.112 ±  3%       ~ (p=0.065 n=6)
ReclaimLargeJobs_1000Node-4                                     31.66 ± 1%    31.44 ±  2%       ~ (p=0.240 n=6)
ReclaimManySingleGPUJobsFullCycle_10Node-4                     154.9m ± 1%   154.2m ±  1%       ~ (p=0.132 n=6)
ReclaimManySingleGPUJobsFullCycle_50Node-4                     961.1m ± 2%   960.6m ±  1%       ~ (p=0.937 n=6)
ReclaimManySingleGPUJobsFullCycle_100Node-4                     3.503 ± 2%    3.504 ±  2%       ~ (p=0.818 n=6)
ReclaimManySingleGPUJobsFullCycle_200Node-4                     16.62 ± 6%    16.15 ± 12%       ~ (p=0.589 n=6)
ReclaimManySingleGPUJobsFullCycle_500Node-4                     136.0 ± 7%    134.4 ±  3%       ~ (p=0.937 n=6)
ReclaimManySingleGPUJobsFullCycleWithMinRuntime_500Node-4       140.6 ± 9%    128.1 ±  8%  -8.92% (p=0.026 n=6)
geomean                                                         3.304         3.254        -1.51%

                                                          │ main-bench.txt │            pr-bench.txt            │
                                                          │      B/op      │     B/op      vs base              │
ReclaimLargeJobs_10Node-4                                     17.21Mi ± 1%   17.20Mi ± 1%       ~ (p=0.699 n=6)
ReclaimLargeJobs_50Node-4                                     91.85Mi ± 0%   91.88Mi ± 0%       ~ (p=0.485 n=6)
ReclaimLargeJobs_100Node-4                                    204.2Mi ± 0%   204.3Mi ± 0%       ~ (p=0.132 n=6)
ReclaimLargeJobs_200Node-4                                    486.2Mi ± 0%   486.2Mi ± 0%       ~ (p=1.000 n=6)
ReclaimLargeJobs_500Node-4                                    1.698Gi ± 0%   1.699Gi ± 0%  +0.03% (p=0.015 n=6)
ReclaimLargeJobs_1000Node-4                                   5.141Gi ± 0%   5.142Gi ± 0%       ~ (p=0.065 n=6)
ReclaimManySingleGPUJobsFullCycle_10Node-4                    14.81Mi ± 0%   14.81Mi ± 0%       ~ (p=0.937 n=6)
ReclaimManySingleGPUJobsFullCycle_50Node-4                    145.0Mi ± 0%   145.0Mi ± 0%       ~ (p=0.093 n=6)
ReclaimManySingleGPUJobsFullCycle_100Node-4                   470.6Mi ± 0%   470.7Mi ± 0%       ~ (p=0.394 n=6)
ReclaimManySingleGPUJobsFullCycle_200Node-4                   1.629Gi ± 0%   1.630Gi ± 0%  +0.02% (p=0.041 n=6)
ReclaimManySingleGPUJobsFullCycle_500Node-4                   10.34Gi ± 0%   10.34Gi ± 0%       ~ (p=0.818 n=6)
ReclaimManySingleGPUJobsFullCycleWithMinRuntime_500Node-4     10.34Gi ± 0%   10.34Gi ± 0%       ~ (p=0.589 n=6)
geomean                                                       504.5Mi        504.5Mi       +0.01%

                                                          │ main-bench.txt │           pr-bench.txt            │
                                                          │   allocs/op    │  allocs/op   vs base              │
ReclaimLargeJobs_10Node-4                                      242.0k ± 0%   242.2k ± 0%  +0.06% (p=0.039 n=6)
ReclaimLargeJobs_50Node-4                                      1.482M ± 0%   1.482M ± 0%  +0.05% (p=0.002 n=6)
ReclaimLargeJobs_100Node-4                                     3.741M ± 0%   3.743M ± 0%  +0.04% (p=0.002 n=6)
ReclaimLargeJobs_200Node-4                                     10.52M ± 0%   10.52M ± 0%  +0.03% (p=0.002 n=6)
ReclaimLargeJobs_500Node-4                                     45.58M ± 0%   45.58M ± 0%  +0.02% (p=0.002 n=6)
ReclaimLargeJobs_1000Node-4                                    159.5M ± 0%   159.5M ± 0%  +0.01% (p=0.002 n=6)
ReclaimManySingleGPUJobsFullCycle_10Node-4                     279.9k ± 0%   280.3k ± 0%  +0.12% (p=0.041 n=6)
ReclaimManySingleGPUJobsFullCycle_50Node-4                     3.742M ± 0%   3.743M ± 0%  +0.04% (p=0.002 n=6)
ReclaimManySingleGPUJobsFullCycle_100Node-4                    13.33M ± 0%   13.34M ± 0%  +0.02% (p=0.002 n=6)
ReclaimManySingleGPUJobsFullCycle_200Node-4                    50.07M ± 0%   50.07M ± 0%  +0.01% (p=0.002 n=6)
ReclaimManySingleGPUJobsFullCycle_500Node-4                    300.6M ± 0%   300.6M ± 0%  +0.01% (p=0.002 n=6)
ReclaimManySingleGPUJobsFullCycleWithMinRuntime_500Node-4      300.6M ± 0%   300.6M ± 0%  +0.01% (p=0.002 n=6)
geomean                                                        11.69M        11.69M       +0.03%

                                                          │ main-bench.txt │              pr-bench.txt              │
                                                          │ full_cycles/op │ full_cycles/op  vs base                │
ReclaimManySingleGPUJobsFullCycle_10Node-4                      1.000 ± 0%       1.000 ± 0%       ~ (p=1.000 n=6) ¹
ReclaimManySingleGPUJobsFullCycle_50Node-4                      1.000 ± 0%       1.000 ± 0%       ~ (p=1.000 n=6) ¹
ReclaimManySingleGPUJobsFullCycle_100Node-4                     1.000 ± 0%       1.000 ± 0%       ~ (p=1.000 n=6) ¹
ReclaimManySingleGPUJobsFullCycle_200Node-4                     1.000 ± 0%       1.000 ± 0%       ~ (p=1.000 n=6) ¹
ReclaimManySingleGPUJobsFullCycle_500Node-4                     1.000 ± 0%       1.000 ± 0%       ~ (p=1.000 n=6) ¹
ReclaimManySingleGPUJobsFullCycleWithMinRuntime_500Node-4       1.000 ± 0%       1.000 ± 0%       ~ (p=1.000 n=6) ¹
geomean                                                         1.000            1.000       +0.00%
¹ all samples are equal

                                            │          main-bench.txt           │                     pr-bench.txt                     │
                                            │ fit_error_tasks_after_allocate/op │ fit_error_tasks_after_allocate/op  vs base           │
ReclaimManySingleGPUJobsFullCycle_500Node-4                         4.000k ± 0%                         4.000k ± 0%  ~ (p=1.000 n=6) ¹
¹ all samples are equal

                                            │          main-bench.txt           │                    pr-bench.txt                    │
                                            │ heap_live_after_allocate_bytes/op │ heap_live_after_allocate_bytes/op  vs base         │
ReclaimManySingleGPUJobsFullCycle_500Node-4                        41.55M ± 76%                        41.55M ± 76%  ~ (p=0.818 n=6)

                                            │         main-bench.txt         │                  pr-bench.txt                   │
                                            │ heap_live_after_cycle_bytes/op │ heap_live_after_cycle_bytes/op  vs base         │
ReclaimManySingleGPUJobsFullCycle_500Node-4                     56.18M ± 56%                     56.17M ± 56%  ~ (p=0.699 n=6)

pkg: github.com/kai-scheduler/KAI-scheduler/pkg/scheduler/actions/preempt
                                  │ main-bench.txt │           pr-bench.txt            │
                                  │     sec/op     │   sec/op     vs base              │
OrderedVictimsQueueConstruction-4      724.2µ ± 7%   709.9µ ± 2%  -1.98% (p=0.002 n=6)

                                  │ main-bench.txt │          pr-bench.txt           │
                                  │      B/op      │     B/op      vs base           │
OrderedVictimsQueueConstruction-4     114.9Ki ± 0%   114.9Ki ± 0%  ~ (p=1.000 n=6) ¹
¹ all samples are equal

                                  │ main-bench.txt │          pr-bench.txt          │
                                  │   allocs/op    │  allocs/op   vs base           │
OrderedVictimsQueueConstruction-4      4.033k ± 0%   4.033k ± 0%  ~ (p=1.000 n=6) ¹
¹ all samples are equal

pkg: github.com/kai-scheduler/KAI-scheduler/pkg/scheduler/actions/reclaim
                                                         │ main-bench.txt │           pr-bench.txt            │
                                                         │     sec/op     │   sec/op     vs base              │
ReclaimUnschedulableDistributedJob_10Node-4                  147.0m ±  3%   148.9m ± 5%       ~ (p=0.240 n=6)
ReclaimUnschedulableDistributedJob_50Node-4                   3.333 ±  6%    3.341 ± 7%       ~ (p=0.937 n=6)
ReclaimUnschedulableDistributedJob_100Node-4                  16.79 ±  2%    16.66 ± 2%       ~ (p=0.818 n=6)
ReclaimUnschedulableDistributedJob_AntiAffinity100Node-4      15.44 ±  1%    15.85 ± 6%       ~ (p=0.065 n=6)
ReclaimWithMissingPVCJobs-4                                  2.745m ± 10%   2.822m ± 4%  +2.80% (p=0.004 n=6)
geomean                                                      810.0m         820.0m       +1.23%

                                                         │ main-bench.txt │            pr-bench.txt            │
                                                         │      B/op      │     B/op      vs base              │
ReclaimUnschedulableDistributedJob_10Node-4                  20.91Mi ± 3%   20.92Mi ± 3%       ~ (p=0.699 n=6)
ReclaimUnschedulableDistributedJob_50Node-4                  1.154Gi ± 0%   1.154Gi ± 0%       ~ (p=0.818 n=6)
ReclaimUnschedulableDistributedJob_100Node-4                 5.560Gi ± 0%   5.560Gi ± 0%       ~ (p=0.818 n=6)
ReclaimUnschedulableDistributedJob_AntiAffinity100Node-4     5.159Gi ± 0%   5.158Gi ± 0%       ~ (p=0.394 n=6)
ReclaimWithMissingPVCJobs-4                                  9.070Ki ± 2%   9.086Ki ± 2%       ~ (p=1.000 n=6)
geomean                                                      91.98Mi        92.02Mi       +0.04%

                                                         │ main-bench.txt │           pr-bench.txt            │
                                                         │   allocs/op    │  allocs/op   vs base              │
ReclaimUnschedulableDistributedJob_10Node-4                   306.1k ± 3%   306.3k ± 3%  +0.06% (p=0.037 n=6)
ReclaimUnschedulableDistributedJob_50Node-4                   27.77M ± 0%   27.77M ± 0%  +0.01% (p=0.015 n=6)
ReclaimUnschedulableDistributedJob_100Node-4                  169.0M ± 0%   169.0M ± 0%       ~ (p=0.065 n=6)
ReclaimUnschedulableDistributedJob_AntiAffinity100Node-4      146.8M ± 0%   146.8M ± 0%       ~ (p=0.937 n=6)
ReclaimWithMissingPVCJobs-4                                    170.0 ± 1%    170.0 ± 1%       ~ (p=1.000 n=6)
geomean                                                       2.046M        2.046M       +0.01%

                                                         │ main-bench.txt │             pr-bench.txt             │
                                                         │  duplicate/op  │ duplicate/op  vs base                │
ReclaimUnschedulableDistributedJob_10Node-4                  0.000 ± 0%       0.000 ± 0%       ~ (p=1.000 n=6) ¹
ReclaimUnschedulableDistributedJob_50Node-4                  366.0 ± 0%       366.0 ± 0%       ~ (p=1.000 n=6) ¹
ReclaimUnschedulableDistributedJob_100Node-4                1.020k ± 0%      1.020k ± 0%       ~ (p=1.000 n=6) ¹
ReclaimUnschedulableDistributedJob_AntiAffinity100Node-4    1.020k ± 0%      1.020k ± 0%       ~ (p=1.000 n=6) ¹
geomean                                                                 ²                 +0.00%               ²
¹ all samples are equal
² summaries must be >0 to compute geomean

                                                         │ main-bench.txt │             pr-bench.txt             │
                                                         │  simulated/op  │ simulated/op  vs base                │
ReclaimUnschedulableDistributedJob_10Node-4                    18.00 ± 0%     18.00 ± 0%       ~ (p=1.000 n=6) ¹
ReclaimUnschedulableDistributedJob_50Node-4                    178.0 ± 0%     178.0 ± 0%       ~ (p=1.000 n=6) ¹
ReclaimUnschedulableDistributedJob_100Node-4                   378.0 ± 0%     378.0 ± 0%       ~ (p=1.000 n=6) ¹
ReclaimUnschedulableDistributedJob_AntiAffinity100Node-4       378.0 ± 0%     378.0 ± 0%       ~ (p=1.000 n=6) ¹
geomean                                                        146.3          146.3       +0.00%
¹ all samples are equal

Legend

  • 📉 Negative delta = Performance improvement (faster)
  • 📈 Positive delta = Performance regression (slower)
  • p-value < 0.05 indicates statistically significant change
Raw benchmark data

PR branch:

goos: linux
goarch: amd64
pkg: github.com/kai-scheduler/KAI-scheduler/pkg/scheduler/actions
cpu: AMD EPYC 9V74 80-Core Processor                
BenchmarkAllocateAction_SmallCluster-4         	       9	 113468342 ns/op	 2188504 B/op	   31602 allocs/op
BenchmarkAllocateAction_SmallCluster-4         	      10	 108308038 ns/op	 2175709 B/op	   31601 allocs/op
BenchmarkAllocateAction_SmallCluster-4         	      10	 107680276 ns/op	 2186143 B/op	   31597 allocs/op
BenchmarkAllocateAction_SmallCluster-4         	      10	 107716058 ns/op	 2174430 B/op	   31599 allocs/op
BenchmarkAllocateAction_SmallCluster-4         	      10	 107569479 ns/op	 2174850 B/op	   31594 allocs/op
BenchmarkAllocateAction_SmallCluster-4         	      10	 107226552 ns/op	 2186766 B/op	   31602 allocs/op
BenchmarkAllocateAction_MediumCluster-4        	       8	 128513513 ns/op	10411086 B/op	  246206 allocs/op
BenchmarkAllocateAction_MediumCluster-4        	       8	 127836427 ns/op	10395752 B/op	  246230 allocs/op
BenchmarkAllocateAction_MediumCluster-4        	       8	 129403567 ns/op	10398915 B/op	  246238 allocs/op
BenchmarkAllocateAction_MediumCluster-4        	       9	 128828188 ns/op	10397473 B/op	  246222 allocs/op
BenchmarkAllocateAction_MediumCluster-4        	       8	 128818830 ns/op	10393555 B/op	  246222 allocs/op
BenchmarkAllocateAction_MediumCluster-4        	       8	 128948740 ns/op	10396178 B/op	  246239 allocs/op
BenchmarkAllocateAction_LargeCluster-4         	       6	 192648892 ns/op	32803529 B/op	 1008297 allocs/op
BenchmarkAllocateAction_LargeCluster-4         	       6	 190671604 ns/op	32815758 B/op	 1008294 allocs/op
BenchmarkAllocateAction_LargeCluster-4         	       6	 190259801 ns/op	32804992 B/op	 1008270 allocs/op
BenchmarkAllocateAction_LargeCluster-4         	       6	 194224138 ns/op	32800540 B/op	 1008280 allocs/op
BenchmarkAllocateAction_LargeCluster-4         	       6	 193308235 ns/op	32801433 B/op	 1008287 allocs/op
BenchmarkAllocateAction_LargeCluster-4         	       6	 195667160 ns/op	32828201 B/op	 1008291 allocs/op
BenchmarkReclaimAction_SmallCluster-4          	      10	 103524388 ns/op	  979676 B/op	    8996 allocs/op
BenchmarkReclaimAction_SmallCluster-4          	      10	 103509839 ns/op	  984029 B/op	    8998 allocs/op
BenchmarkReclaimAction_SmallCluster-4          	      10	 103762404 ns/op	  980476 B/op	    8998 allocs/op
BenchmarkReclaimAction_SmallCluster-4          	      10	 103940134 ns/op	  980764 B/op	    8998 allocs/op
BenchmarkReclaimAction_SmallCluster-4          	      10	 103316431 ns/op	  976652 B/op	    8997 allocs/op
BenchmarkReclaimAction_SmallCluster-4          	      10	 103658608 ns/op	  980631 B/op	    8999 allocs/op
BenchmarkReclaimAction_MediumCluster-4         	      10	 107306474 ns/op	 3258836 B/op	   28371 allocs/op
BenchmarkReclaimAction_MediumCluster-4         	      10	 107391396 ns/op	 3262977 B/op	   28369 allocs/op
BenchmarkReclaimAction_MediumCluster-4         	      10	 107119521 ns/op	 3265998 B/op	   28370 allocs/op
BenchmarkReclaimAction_MediumCluster-4         	      10	 107812135 ns/op	 3262417 B/op	   28370 allocs/op
BenchmarkReclaimAction_MediumCluster-4         	      10	 107356385 ns/op	 3262179 B/op	   28369 allocs/op
BenchmarkReclaimAction_MediumCluster-4         	      10	 106887262 ns/op	 3265588 B/op	   28369 allocs/op
BenchmarkPreemptAction_SmallCluster-4          	      10	 104384173 ns/op	 1410421 B/op	   15353 allocs/op
BenchmarkPreemptAction_SmallCluster-4          	      10	 104948775 ns/op	 1414804 B/op	   15354 allocs/op
BenchmarkPreemptAction_SmallCluster-4          	      10	 104746197 ns/op	 1414175 B/op	   15353 allocs/op
BenchmarkPreemptAction_SmallCluster-4          	      10	 104284843 ns/op	 1411146 B/op	   15354 allocs/op
BenchmarkPreemptAction_SmallCluster-4          	      10	 104509564 ns/op	 1405928 B/op	   15349 allocs/op
BenchmarkPreemptAction_SmallCluster-4          	      10	 104622644 ns/op	 1406484 B/op	   15351 allocs/op
BenchmarkPreemptAction_MediumCluster-4         	       9	 115209944 ns/op	 6234530 B/op	   55642 allocs/op
BenchmarkPreemptAction_MediumCluster-4         	       9	 114851233 ns/op	 6226184 B/op	   55641 allocs/op
BenchmarkPreemptAction_MediumCluster-4         	       9	 115113771 ns/op	 6234914 B/op	   55644 allocs/op
BenchmarkPreemptAction_MediumCluster-4         	       9	 114518418 ns/op	 6234646 B/op	   55642 allocs/op
BenchmarkPreemptAction_MediumCluster-4         	       9	 114367467 ns/op	 6235042 B/op	   55645 allocs/op
BenchmarkPreemptAction_MediumCluster-4         	       9	 115704845 ns/op	 6230368 B/op	   55641 allocs/op
BenchmarkConsolidationAction_SmallCluster-4    	       9	 121207635 ns/op	 8604771 B/op	  109732 allocs/op
BenchmarkConsolidationAction_SmallCluster-4    	       9	 121364093 ns/op	 8603138 B/op	  109741 allocs/op
BenchmarkConsolidationAction_SmallCluster-4    	       9	 121072792 ns/op	 8602109 B/op	  109734 allocs/op
BenchmarkConsolidationAction_SmallCluster-4    	       9	 121566826 ns/op	 8606288 B/op	  109762 allocs/op

Main branch:

goos: linux
goarch: amd64
pkg: github.com/kai-scheduler/KAI-scheduler/pkg/scheduler/actions
cpu: AMD EPYC 9V74 80-Core Processor                
BenchmarkAllocateAction_SmallCluster-4         	      10	 107367038 ns/op	 2207733 B/op	   31500 allocs/op
BenchmarkAllocateAction_SmallCluster-4         	      10	 107381353 ns/op	 2179792 B/op	   31492 allocs/op
BenchmarkAllocateAction_SmallCluster-4         	      10	 107508968 ns/op	 2172187 B/op	   31486 allocs/op
BenchmarkAllocateAction_SmallCluster-4         	      10	 107315868 ns/op	 2182896 B/op	   31492 allocs/op
BenchmarkAllocateAction_SmallCluster-4         	      10	 107405075 ns/op	 2182861 B/op	   31489 allocs/op
BenchmarkAllocateAction_SmallCluster-4         	      10	 107751333 ns/op	 2172998 B/op	   31481 allocs/op
BenchmarkAllocateAction_MediumCluster-4        	       8	 128886478 ns/op	10383747 B/op	  245775 allocs/op
BenchmarkAllocateAction_MediumCluster-4        	       8	 127541410 ns/op	10382728 B/op	  245739 allocs/op
BenchmarkAllocateAction_MediumCluster-4        	       8	 128595157 ns/op	10383856 B/op	  245761 allocs/op
BenchmarkAllocateAction_MediumCluster-4        	       8	 128189328 ns/op	10384211 B/op	  245796 allocs/op
BenchmarkAllocateAction_MediumCluster-4        	       8	 127999640 ns/op	10384402 B/op	  245748 allocs/op
BenchmarkAllocateAction_MediumCluster-4        	       8	 127842100 ns/op	10384382 B/op	  245780 allocs/op
BenchmarkAllocateAction_LargeCluster-4         	       6	 192484097 ns/op	32798002 B/op	 1007197 allocs/op
BenchmarkAllocateAction_LargeCluster-4         	       6	 193986292 ns/op	32777934 B/op	 1007160 allocs/op
BenchmarkAllocateAction_LargeCluster-4         	       6	 192898056 ns/op	32776458 B/op	 1007160 allocs/op
BenchmarkAllocateAction_LargeCluster-4         	       6	 192075924 ns/op	32777521 B/op	 1007187 allocs/op
BenchmarkAllocateAction_LargeCluster-4         	       6	 194391334 ns/op	32802080 B/op	 1007189 allocs/op
BenchmarkAllocateAction_LargeCluster-4         	       6	 195674220 ns/op	32797657 B/op	 1007203 allocs/op
BenchmarkReclaimAction_SmallCluster-4          	      10	 103679837 ns/op	  977628 B/op	    8936 allocs/op
BenchmarkReclaimAction_SmallCluster-4          	      10	 103645739 ns/op	  977687 B/op	    8936 allocs/op
BenchmarkReclaimAction_SmallCluster-4          	      10	 103619682 ns/op	  974741 B/op	    8938 allocs/op
BenchmarkReclaimAction_SmallCluster-4          	      10	 103647415 ns/op	  978372 B/op	    8938 allocs/op
BenchmarkReclaimAction_SmallCluster-4          	      10	 103799184 ns/op	  978487 B/op	    8937 allocs/op
BenchmarkReclaimAction_SmallCluster-4          	      10	 103530713 ns/op	  978228 B/op	    8936 allocs/op
BenchmarkReclaimAction_MediumCluster-4         	      10	 107439551 ns/op	 3256920 B/op	   28120 allocs/op
BenchmarkReclaimAction_MediumCluster-4         	      10	 107330630 ns/op	 3253865 B/op	   28120 allocs/op
BenchmarkReclaimAction_MediumCluster-4         	      10	 107234883 ns/op	 3252998 B/op	   28119 allocs/op
BenchmarkReclaimAction_MediumCluster-4         	      10	 107084643 ns/op	 3253425 B/op	   28120 allocs/op
BenchmarkReclaimAction_MediumCluster-4         	      10	 108105263 ns/op	 3252863 B/op	   28118 allocs/op
BenchmarkReclaimAction_MediumCluster-4         	      10	 107124623 ns/op	 3253916 B/op	   28120 allocs/op
BenchmarkPreemptAction_SmallCluster-4          	      10	 105005734 ns/op	 1407674 B/op	   15267 allocs/op
BenchmarkPreemptAction_SmallCluster-4          	      10	 104349441 ns/op	 1412381 B/op	   15270 allocs/op
BenchmarkPreemptAction_SmallCluster-4          	      10	 104651588 ns/op	 1407719 B/op	   15267 allocs/op
BenchmarkPreemptAction_SmallCluster-4          	      10	 104995475 ns/op	 1411850 B/op	   15270 allocs/op
BenchmarkPreemptAction_SmallCluster-4          	      10	 104450752 ns/op	 1404237 B/op	   15267 allocs/op
BenchmarkPreemptAction_SmallCluster-4          	      10	 104763700 ns/op	 1407789 B/op	   15267 allocs/op
BenchmarkPreemptAction_MediumCluster-4         	       9	 116278983 ns/op	 6220297 B/op	   55292 allocs/op
BenchmarkPreemptAction_MediumCluster-4         	       9	 116534424 ns/op	 6224621 B/op	   55294 allocs/op
BenchmarkPreemptAction_MediumCluster-4         	       9	 115061675 ns/op	 6224205 B/op	   55293 allocs/op
BenchmarkPreemptAction_MediumCluster-4         	       9	 116248386 ns/op	 6219755 B/op	   55290 allocs/op
BenchmarkPreemptAction_MediumCluster-4         	       9	 116492721 ns/op	 6224568 B/op	   55294 allocs/op
BenchmarkPreemptAction_MediumCluster-4         	       9	 116166925 ns/op	 6224436 B/op	   55294 allocs/op
BenchmarkConsolidationAction_SmallCluster-4    	       9	 121600098 ns/op	 8605585 B/op	  109686 allocs/op
BenchmarkConsolidationAction_SmallCluster-4    	       9	 121370999 ns/op	 8605048 B/op	  109690 allocs/op
BenchmarkConsolidationAction_SmallCluster-4    	       9	 121311182 ns/op	 8602342 B/op	  109667 allocs/op
BenchmarkConsolidationAction_SmallCluster-4    	       9	 121171587 ns/op	 8598269 B/op	  109622 allocs/op

@davidLif
davidLif force-pushed the codex/fractional-gpu-mode-scheduler branch from 4831cca to 8073512 Compare August 11, 2026 20:25
@davidLif
davidLif force-pushed the codex/fractional-gpu-mode-scheduler branch from 8073512 to ef72443 Compare August 11, 2026 21:06
@davidLif
davidLif force-pushed the codex/fractional-gpu-mode-scheduler branch from ef72443 to f2cfd46 Compare August 11, 2026 21:26
@davidLif
davidLif force-pushed the codex/fractional-gpu-mode-scheduler branch from f2cfd46 to dc05b70 Compare August 11, 2026 22:04
@davidLif
davidLif force-pushed the codex/fractional-gpu-mode-scheduler branch 2 times, most recently from 6d1b99d to 4d96fcd Compare August 11, 2026 22:13
@davidLif
davidLif force-pushed the codex/fractional-gpu-mode-scheduler branch from 4d96fcd to 7916dac Compare August 11, 2026 22:17
@github-actions

github-actions Bot commented Aug 11, 2026

Copy link
Copy Markdown

Total coverage: 54.6% -> 54.8% (delta 0.20%)

Merging this branch changes the coverage (1 decrease, 4 increase)

Impacted Packages Coverage Δ 🤖
github.com/kai-scheduler/KAI-scheduler/pkg/scheduler/actions/allocate 94.87% (ø)
github.com/kai-scheduler/KAI-scheduler/pkg/scheduler/actions/integration_tests/integration_tests_utils 0.00% (ø)
github.com/kai-scheduler/KAI-scheduler/pkg/scheduler/actions/integration_tests/reclaim 0.00% (ø)
github.com/kai-scheduler/KAI-scheduler/pkg/scheduler/api/node_info 77.97% (+0.95%) 👍
github.com/kai-scheduler/KAI-scheduler/pkg/scheduler/api/pod_info 74.03% (+1.20%) 👍
github.com/kai-scheduler/KAI-scheduler/pkg/scheduler/cache 45.83% (ø)
github.com/kai-scheduler/KAI-scheduler/pkg/scheduler/framework 50.47% (+0.36%) 👍
github.com/kai-scheduler/KAI-scheduler/pkg/scheduler/gpu_sharing 37.21% (-6.03%) 👎
github.com/kai-scheduler/KAI-scheduler/pkg/scheduler/plugins/gpusharingnodevalidation 34.00% (+34.00%) 🌟
github.com/kai-scheduler/KAI-scheduler/pkg/scheduler/test_utils 0.00% (ø)
github.com/kai-scheduler/KAI-scheduler/pkg/scheduler/test_utils/jobs_fake 61.01% (ø)
github.com/kai-scheduler/KAI-scheduler/pkg/scheduler/test_utils/tasks_fake 0.00% (ø)

Coverage by file

Changed files (no unit tests)

Changed File Coverage Δ Total Covered Missed 🤖
github.com/kai-scheduler/KAI-scheduler/pkg/scheduler/actions/integration_tests/integration_tests_utils/integration_tests_utils.go 0.00% (ø) 75 0 75
github.com/kai-scheduler/KAI-scheduler/pkg/scheduler/api/node_info/gpu_sharing_node_info.go 71.51% (+4.18%) 172 (+22) 123 (+22) 49 👍
github.com/kai-scheduler/KAI-scheduler/pkg/scheduler/api/pod_info/pod_info.go 70.62% (+2.20%) 211 (+21) 149 (+19) 62 (+2) 👍
github.com/kai-scheduler/KAI-scheduler/pkg/scheduler/cache/cache.go 54.49% (ø) 156 85 71
github.com/kai-scheduler/KAI-scheduler/pkg/scheduler/framework/operations.go 100.00% (ø) 12 12 0
github.com/kai-scheduler/KAI-scheduler/pkg/scheduler/framework/session.go 37.96% (ø) 274 104 170
github.com/kai-scheduler/KAI-scheduler/pkg/scheduler/framework/statement.go 56.31% (+1.01%) 309 (+7) 174 (+7) 135 👍
github.com/kai-scheduler/KAI-scheduler/pkg/scheduler/gpu_sharing/gpuSharing.go 37.21% (-6.03%) 43 (+6) 16 27 (+6) 👎
github.com/kai-scheduler/KAI-scheduler/pkg/scheduler/plugins/gpusharingnodevalidation/gpusharingnodevalidation.go 34.00% (+34.00%) 50 (+50) 17 (+17) 33 (+33) 🌟
github.com/kai-scheduler/KAI-scheduler/pkg/scheduler/test_utils/jobs_fake/jobs.go 61.01% (ø) 159 97 62
github.com/kai-scheduler/KAI-scheduler/pkg/scheduler/test_utils/tasks_fake/tasks.go 0.00% (ø) 47 (+3) 0 47 (+3)
github.com/kai-scheduler/KAI-scheduler/pkg/scheduler/test_utils/test_utils.go 0.00% (ø) 161 (+2) 0 161 (+2)

Please note that the "Total", "Covered", and "Missed" counts above refer to code statements instead of lines of code. The value in brackets refers to the test coverage of that file in the old version of the code.

Changed unit test files

  • github.com/kai-scheduler/KAI-scheduler/pkg/scheduler/actions/allocate/allocateFractionalGpu_test.go
  • github.com/kai-scheduler/KAI-scheduler/pkg/scheduler/actions/integration_tests/reclaim/reclaimFractional_test.go
  • github.com/kai-scheduler/KAI-scheduler/pkg/scheduler/api/node_info/node_info_test.go
  • github.com/kai-scheduler/KAI-scheduler/pkg/scheduler/api/pod_info/pod_info_test.go
  • github.com/kai-scheduler/KAI-scheduler/pkg/scheduler/framework/statement_test.go
  • github.com/kai-scheduler/KAI-scheduler/pkg/scheduler/gpu_sharing/gpuSharing_test.go

@davidLif
davidLif force-pushed the codex/fractional-gpu-mode-scheduler branch from 7916dac to 9bccd14 Compare August 13, 2026 11:32
@davidLif
davidLif force-pushed the codex/fractional-gpu-mode-scheduler branch from 9bccd14 to b901e51 Compare August 17, 2026 06:39
Signed-off-by: davidLif <davidshani12@gmail.com>
@davidLif
davidLif force-pushed the codex/fractional-gpu-mode-scheduler branch from b901e51 to bba6ecb Compare August 17, 2026 11:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant